When generating prices for complex transactions, such as service engagements, there is often a need to price different portions of a deal in a different manner. This can become a complex requirement when there is a hierarchy within the pricing structure, which is often the case. For instance, an engagement specification may be created by defining specific components of a service to be delivered and then either drilling down to provide substructure within each component or assembling more complex structures by aggregating several disparate engagement components. This process results in a tree structure where the root node represents the entire engagement and subsequent levels in the tree represent engagement components of increasing granularity.
Each time a portion of the engagement deal is priced, a user may wish to maintain the assigned price over that specific portion even if other overlapping portions or subcomponents of the original portion are re-priced. When multiple, overlapping segments of the transaction require fixed prices, a change to a single component of the engagement may require changes to many other components to maintain all of the fixed price requirements. Determining these changes can be non-trivial in a complex transaction.
For example, if a vendor is entering into a deal that requires the company to sell equipment or services from multiple vendors, the markup on the equipment or services from one vendor may be different from those of another vendor. If a user prices hardware from one vendor, they may want to ‘freeze’ that price so it is not affected by other changes. Alternatively, a user might want to ‘freeze’ a parent price, price a child deal, and have the parent price remain intact. If a component price from the vendor is changed, that change may result in violation of one or more fixed price requirements.
Pricing a complex engagement deal can be a dynamic, collaborative process, and users may desire the ability to create freeze conditions of arbitrary scope and complexity. Maintaining these freeze conditions is a non-trivial problem as component prices change.